// pages/shop/index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 导航栏总高度 = 状态栏高度 + 导航栏高度(88rpx)
    navBarHeight: 0,
    bottomSafeArea: 0, // 底部安全区域高度
    activeCategoryId: 'all', // 默认选中全部
    categories: [], // 动态获取的分类列表
    products: [], // 从云数据库获取商品数据
    allProducts: [], // 存储所有商品数据
    filteredProducts: [] // 当前分类筛选后的商品
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const systemInfo = wx.getSystemInfoSync()
    const statusBarHeight = systemInfo.statusBarHeight
    const navBarHeight = statusBarHeight + 44 // 44是导航栏内容高度
    
    // 精确计算底部适配高度
    // 微信官方tabBar高度：50px + 安全区域高度
    const tabBarHeight = 50 // 微信小程序标准tabBar高度
    const bottomSafeArea = systemInfo.safeArea ? systemInfo.screenHeight - systemInfo.safeArea.bottom : 0
    const bottomOffset = tabBarHeight + bottomSafeArea
    
    this.setData({ 
      navBarHeight,
      bottomSafeArea: bottomOffset // 总底部间距
    })
    
    // 加载所有商品数据和分类
    this.loadAllGoods()
  },

  /**
   * 加载所有商品数据
   */
  async loadAllGoods() {
    try {
      wx.showLoading({
        title: '加载商品中...',
        mask: true
      })

      const result = await wx.cloud.callFunction({
        name: 'getGoods',
        data: {
          recommended: null, // 获取所有商品
          limit: 50, // 商店页面显示更多商品
          skip: 0,
          orderBy: 'sales',
          orderType: 'desc'
          // status: 1 的筛选已在云函数中处理
        }
      })

      console.log('商店商品数据获取结果：', result)

      if (result.result && result.result.success) {
        const goods = result.result.data || []
        
        // 处理商品数据，兼容原有字段
        const processedGoods = goods.map(item => ({
          ...item,
          id: item._id || item.id,
          name: item.name,
          desc: item.description,
          originalPrice: item.originalPrice,
          currentPrice: item.price,
          image: item.image,
          isNew: item.isNew || false
        }))

        this.setData({
          allProducts: processedGoods,
          products: processedGoods,
          filteredProducts: processedGoods
        })

        // 动态生成分类列表
        this.generateCategories(processedGoods)

        // 根据当前选中的分类进行筛选
        this.filterProductsByCategory(this.data.activeCategoryId)

        console.log('商店商品数据加载成功，共', processedGoods.length, '个商品')
      } else {
        console.error('商店商品数据获取失败：', result.result?.message || '未知错误')
        wx.showToast({
          title: '商品数据加载失败',
          icon: 'none',
          duration: 2000
        })
      }
    } catch (error) {
      console.error('加载商店商品数据出错：', error)
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none',
        duration: 2000
      })
    } finally {
      wx.hideLoading()
    }
  },

  /**
   * 动态生成分类列表
   */
  generateCategories(products) {
    // 只统计上架商品 (status = 1)
    const onlineProducts = products.filter(product => product.status === 1)
    
    // 获取所有唯一的商品分类
    const categorySet = new Set()
    onlineProducts.forEach(product => {
      if (product.category) {
        categorySet.add(product.category)
      }
    })

    // 构建分类列表，始终保持"全部"在最上方
    const categories = [
      { id: 'all', name: '全部', count: onlineProducts.length }
    ]

    // 添加动态分类
    Array.from(categorySet).forEach((categoryName, index) => {
      const count = onlineProducts.filter(p => p.category === categoryName).length
      categories.push({
        id: categoryName,
        name: categoryName,
        count: count
      })
    })

    this.setData({
      categories: categories
    })

    console.log('动态生成分类列表（仅上架商品）：', categories)
  },

  /**
   * 根据分类筛选商品
   */
  filterProductsByCategory(categoryId) {
    let filteredProducts = []
    
    if (categoryId === 'all') {
      // 显示所有上架商品
      filteredProducts = this.data.allProducts.filter(product => product.status === 1)
    } else {
      // 按分类筛选上架商品
      filteredProducts = this.data.allProducts.filter(product => 
        product.category === categoryId && product.status === 1
      )
    }
    
    this.setData({
      products: filteredProducts
    })

    console.log(`筛选分类 ${categoryId}，共 ${filteredProducts.length} 个上架商品`)
  },

  /**
   * 搜索按钮点击事件
   */
  onSearch() {
    wx.navigateTo({
      url: '/pages/search/index'
    })
  },

  /**
   * 处理分类点击
   */
  handleCategoryTap(e) {
    const categoryId = e.currentTarget.dataset.id;
    this.setData({
      activeCategoryId: categoryId
    });
    
    // 根据分类筛选商品
    this.filterProductsByCategory(categoryId)
  },

  /**
   * 商品卡片点击事件 - 跳转到商品详情页
   */
  onProductTap(e) {
    const productId = e.currentTarget.dataset.id;
    console.log('点击商品卡片，ID:', productId);
    wx.navigateTo({
      url: `/pages/goods_detail/index?id=${productId}`
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 2
      });
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  async onPullDownRefresh() {
    try {
      await this.loadAllGoods()
      wx.showToast({
        title: '刷新成功',
        icon: 'success',
        duration: 1000
      })
    } catch (error) {
      console.error('下拉刷新失败:', error)
      wx.showToast({
        title: '刷新失败',
        icon: 'none',
        duration: 1000
      })
    } finally {
      wx.stopPullDownRefresh()
    }
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})